// conf/conf_system.go
// =============================================================================
// | 包: conf                                                                 |
// | 模块: 系统网络配置                                                       |
// | 功能: 定义应用程序的网络监听参数                                          |
// =============================================================================
package conf

import "fmt" // 格式化包 - 用于字符串格式化和输出

// =============================================================================
// | 结构体: System                                                           |
// | 功能: 系统网络配置                                                       |
// | 用途: 存储应用程序基础网络参数，配置应用程序的监听IP地址和端口号          |
// =============================================================================
type System struct {
	// =============================================================================
	// | 字段: IP - string                                                        |
	// | 功能: 监听IP地址                                                         |
	// | 默认值: "" - 表示监听所有网络接口                                        |
	// | 用途: 指定应用程序绑定的网络接口IP地址                                   |
	// | 映射: YAML配置中的ip字段                                                 |
	// =============================================================================
	IP string `yaml:"ip"` // 监听IP地址 - 指定应用程序绑定的网络接口

	// =============================================================================
	// | 字段: Port - int                                                         |
	// | 功能: 监听端口号                                                         |
	// | 用途: 指定应用程序监听的TCP端口                                          |
	// | 示例: 8080, 80, 443等                                                   |
	// | 映射: YAML配置中的port字段                                               |
	// =============================================================================
	Port int `yaml:"port"` // 监听端口号 - 指定应用程序的TCP端口

	// =============================================================================
	// | 字段: GinMode - string                                                   |
	// | 功能: Gin框架运行模式                                                    |
	// | 用途: 设置Gin框架的运行模式 (debug/release/test)                         |
	// | 映射: YAML配置中的gin_mode字段                                           |
	// =============================================================================
	GinMode string `yaml:"gin_mode"` // Gin框架运行模式 - 设置运行模式

	// =============================================================================
	// | 字段: Env - string                                                       |
	// | 功能: 运行环境标识                                                       |
	// | 用途: 标识当前应用程序的运行环境 (dev/prod/test)                         |
	// | 映射: YAML配置中的env字段                                                |
	// =============================================================================
	Env string `yaml:"env"` // 运行环境标识 - 标识应用程序运行环境
}

// =============================================================================
// | 函数: Addr                                                               |
// | 参数: 无                                                                  |
// | 返回: @string - 格式化的网络地址字符串，格式为"IP:Port"                  |
// | 功能: 生成完整的网络地址字符串                                            |
// | 说明: 将System结构体中的IP和Port字段格式化为标准的网络地址格式            |
// |----------------------------------------------------------------------------|
// | 流程:                                                                     |
// | 1. 使用fmt.Sprintf格式化IP和Port字段                                      |
// | 2. 返回格式化后的完整网络地址字符串                                       |
// =============================================================================
func (s System) Addr() string {
	// -------------------------------------------------------------------------
	// | 步骤1: 格式化网络地址                                                  |
	// -------------------------------------------------------------------------
	// 使用fmt.Sprintf将IP和Port格式化为"IP:Port"格式
	addr := fmt.Sprintf("%s:%d", s.IP, s.Port) // 格式化网络地址

	// -------------------------------------------------------------------------
	// | 步骤2: 返回格式化结果                                                  |
	// -------------------------------------------------------------------------
	// 返回格式化后的网络地址字符串
	return addr // 返回完整网络地址
}
